package instrarbre;

import java.util.HashMap;
import javax.swing.JTextArea;

public abstract class ASAInstr {

    public ASAInstr getInstr() {
        return null;
    }

    public String getLabelExplorateur() {
        return this.getClass().getSimpleName().substring(3).toUpperCase();
    }

    public int getNbDeclare() {
        if (getInstr() != null) {
            return getInstr().getNbDeclare();
        }
        return 0;
    }

    public abstract void interpreter(HashMap<String, Integer> affectation);

    public String notationExplorateur() {
        return notationExplorateur("  ");
    }

    protected String notationExplorateur(String prefixe) {
        String res = prefixe + getLabelExplorateur() + "\n";
        String prefixeSuiv = prefixe + "  ";
        if (getInstr() != null) {
            res += getInstr().notationExplorateur(prefixeSuiv);
        }
        return res;
    }

    public void setView(JTextArea area) {
        if (getInstr() != null) {
            getInstr().setView(area);
        }
    }
}